Find lucky integer in an array

Time: O(N); Space: O(N); easy

Given an array of integers arr, a lucky integer is an integer which has a frequency in the array equal to its value.

Return a lucky integer in the array. If there are multiple lucky integers return the largest of them. If there is no lucky integer return -1.

Example 1:

Input: arr = [2,2,3,4]

Output: 2

Explanation:

  • The only lucky number in the array is 2 because frequency[2] == 2.

Example 2:

Input: arr = [1,2,2,3,3,3]

Output: 3

Explanation:

  • 2 and 3 are all lucky numbers, return the largest of them.

Example 3:

Input: arr = [2,2,2,3,3]

Output: -1

Explanation:

  • There are no lucky numbers in the array.

Example 4:

Input: arr = [5]

Output: -1

Example 5:

Input: arr = [7,7,7,7,7,7,7]

Output: 7

Notes:

  • 1 <= len(arr) <= 500

  • 1 <= arr[i] <= 500

[ ]:

Hints:

  1. Count the frequency of each integer in the array.

  2. Get all lucky numbers and return the largest of them.

[3]:
import collections

class Solution1(object):
    def findLucky(self, arr):
        """
        :type arr: List[int]
        :rtype: int
        """
        count = collections.Counter(arr)
        result = -1

        for k, v in count.items():
            if k == v:
                result = max(result, k)

        return result
[4]:
s = Solution1()
arr = [2,2,3,4]
assert s.findLucky(arr) == 2
arr = [1,2,2,3,3,3]
assert s.findLucky(arr) == 3
arr = [2,2,2,3,3]
assert s.findLucky(arr) == -1
arr = [5]
assert s.findLucky(arr) == -1
arr = [7,7,7,7,7,7,7]
assert s.findLucky(arr) == 7